#故障注入  测试应用程序的弹性
ip=$(hostname -I |awk '{print $1}')

kubectl apply -f route-test/route-rule-all-v1.yaml
kubectl apply -f route-test/route-rule-reviews-test-v2.yaml

#经过上面的配置，下面是请求的流程：

#productpage → reviews:v2 → ratings (针对 jason 用户)
#productpage → reviews:v1 (其他用户)

kubectl apply -f route-rule/add_fault.yaml

iptables -P FORWARD ACCEPT
iptables -I FORWARD 1 -i cni0 -j ACCEPT -m comment --comment "flannel subnet"
iptables -I FORWARD 1 -o cni0 -j ACCEPT -m comment --comment "flannel subnet"
iptables -t nat -A POSTROUTING -s 10.244.0.0/16 ! -d 10.244.0.0/16 -j MASQUERADE

#确认规则创建
kubectl get virtualservice ratings -o yaml
sleep  15s

echo  "浏览器访问刷新http://$ip:31380/productpage,页面显示正常，但是使用用户jason登录，刷新页面reviews服务会出现错误"
echo  'Error fetching product reviews!'

#reviews 和 ratings 服务间的超时被硬编码为 10 秒。 但是，在 productpage 和 reviews 服务之间也有一个 3 秒的硬编码的超时，
#再加 1 次重试，一共 6 秒。 结果，productpage 对 reviews 的调用在 6 秒后提前超时并抛出错误了。
#
#这种类型的错误可能发生在典型的由不同的团队独立开发不同的微服务的企业应用程序中。 Istio 的故障注入规则可以帮助您识别此类异常，而不会影响最终用户。